package connect;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

import util.Util;

public class Resign extends JFrame {
	private static final long serialVersionUID = 1L;
	//注册面板
	private JPanel contentPane;
	//注册id输入框
	private JTextField textField;
	//连接密码输入框
	private JPasswordField passwordField;
	//确认密码输入框
	private JPasswordField passwordField_1;
	//错误提示框
	private JLabel lblNewLabel;

	public Resign() {
		setTitle("注册设备界面\n");
		//退出应用默认关闭窗口
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置窗口位置和大小
		setBounds(730, 360, 450, 300);
		//注册面板
		contentPane = new JPanel() {
			private static final long serialVersionUID = 1L;
			//安排背景图片
			@Override
			protected void paintComponent(Graphics g) {
				super.paintComponent(g);
				g.drawImage(new ImageIcon("images\\背景.jpg").getImage(),
						0,0, getWidth(), getHeight(), null);
			}
		};
		//设置面板边框
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		//将面板设置为窗口最外层容器
		setContentPane(contentPane);
		//自定义布局
		contentPane.setLayout(null);
		
		//注册id输入提示信息
		JTextPane textpane_Id = new JTextPane();
		//设置为不可编辑状态
		textpane_Id.setEditable(false); 
		//设置文本框内容字体
		textpane_Id.setFont(new Font("微软雅黑", Font.BOLD, 25));
		//设置位置和大小
		textpane_Id.setBounds(58, 33, 120, 40);
		//透明
		textpane_Id.setOpaque(false);
		//提示内容
		textpane_Id.setText("路灯id:");
		//加入最外层容器
		contentPane.add(textpane_Id);
		
		//注册id输入栏
		textField = new JTextField();
		//设置位置和大小
		textField.setBounds(144, 37, 140, 30);
		//设置输入内容字体
		textField.setFont(new Font("微软雅黑", Font.BOLD, 25));
		//透明
		textField.setOpaque(false);
		//加入最外层容器
		contentPane.add(textField);
		
		//密码输入提示信息
		JTextPane textpane_pwd = new JTextPane();
		//设置为不可编辑状态
		textpane_pwd.setEditable(false); 
		//设置文本框内容字体
		textpane_pwd.setFont(new Font("微软雅黑", Font.BOLD, 25));
		//设置位置和大小
		textpane_pwd.setBounds(32, 81, 120, 40);
		//透明
		textpane_pwd.setOpaque(false);
		//提示信息内容
		textpane_pwd.setText("连接密码:");
		//加入最外层容器
		contentPane.add(textpane_pwd);
		
		//密码栏
		passwordField = new JPasswordField();
		//输入内容转换成'*'
		passwordField.setEchoChar('*');
		//透明
		passwordField.setOpaque(false);
		//设置位置和大小
		passwordField.setBounds(144, 88, 140, 30);
		//设置输入内容字体
		passwordField.setFont(new Font("微软雅黑", Font.BOLD, 25));
		//加入最外层容器
		contentPane.add(passwordField);
		
		//确认密码输入提示信息
		JTextPane textpane_pwda = new JTextPane();
		//设置为不可编辑状态
		textpane_pwda.setEditable(false); 
		//设置文本框内容字体
		textpane_pwda.setFont(new Font("微软雅黑", Font.BOLD, 25));
		//设置位置和大小
		textpane_pwda.setBounds(32, 131, 120, 40);
		//透明
		textpane_pwda.setOpaque(false);
		//提示内容
		textpane_pwda.setText("确认密码:");
		//加入最外层容器
		contentPane.add(textpane_pwda);
		
		//确认密码栏
		passwordField_1 = new JPasswordField();
		//将输入内容转换成'*'
		passwordField_1.setEchoChar('*');
		//设置位置和大小
		passwordField_1.setBounds(144, 137, 140, 30);
		//设置输入内容字体
		passwordField_1.setFont(new Font("微软雅黑", Font.BOLD, 25));
		//透明
		passwordField_1.setOpaque(false);
		//加入最外层容器
		contentPane.add(passwordField_1);
		
		//注册按钮
		final JButton btnNewButton_1 = new JButton("注册");
		//字体设置
		btnNewButton_1.setFont(new Font("微软雅黑", Font.BOLD, 18));
		//位置及大小设置
		btnNewButton_1.setBounds(246, 190, 70, 30);
		//背景为白色背景图片
		btnNewButton_1.setIcon(new ImageIcon("images\\白色.png"));
		//文字为黑色
		btnNewButton_1.setForeground(Color.BLACK);
		//显示文字
		btnNewButton_1.setHorizontalTextPosition(SwingConstants.CENTER);
		//回车默认点击此按钮
		getRootPane().setDefaultButton(btnNewButton_1);
		//加入最外层容器
		contentPane.add(btnNewButton_1);
		
		//返回按钮
		final JButton btnNewButton_back = new JButton("返回");
		//字体设置
		btnNewButton_back.setFont(new Font("微软雅黑", Font.BOLD, 18));
		//位置及大小设置
		btnNewButton_back.setBounds(336, 190, 70, 30);
		//背景为白色背景图片
		btnNewButton_back.setIcon(new ImageIcon("images\\白色.png"));
		//文字为黑色
		btnNewButton_back.setForeground(Color.BLACK);
		//显示文字
		btnNewButton_back.setHorizontalTextPosition(SwingConstants.CENTER);
		contentPane.add(btnNewButton_back);
		
		//提示信息
		lblNewLabel = new JLabel();
		//设置位置和大小
		lblNewLabel.setBounds(60, 195, 185, 20);
		//设置字体颜色
		lblNewLabel.setForeground(Color.red);
		//设置字体样式
		lblNewLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
		//加入最外层容器
		contentPane.add(lblNewLabel);
		
		//返回按钮监听
		btnNewButton_back.addActionListener(new ActionListener() {
			//点击按钮时调用
			public void actionPerformed(ActionEvent e) {
				//锁定"返回"按钮
				btnNewButton_back.setEnabled(false);
				//返回登陆界面
				Connect frame = new Connect();
				//显示登陆界面
				frame.setVisible(true);
				//隐藏注册界面
				setVisible(false);
			}
		});
		//注册按钮监听
		btnNewButton_1.addActionListener(new ActionListener() {
			//点击按钮时调用
			public void actionPerformed(ActionEvent e) {
				//实例化一个Properties属性对象
				Properties userPro = new Properties();
				//将文件名为设定输入流的源文件
				File file = new File("Users.properties");
				//将"Users.properties"文件加载到属性对象中进行操作
				Util.loadPro(userPro, file);
				//获取输入内容
				String u_name = textField.getText();
				String u_pwd = new String(passwordField.getPassword());
				String u_pwd_ag = new String(passwordField_1.getPassword());

				//判断是否输入id
				if (u_name.length() != 0) {
					//判断id是否在已注册
					if (userPro.containsKey(u_name)) {
						lblNewLabel.setText("此id已存在!");
					} else {
						//判断两次密码是否输入一样，一样就注册
						isPassword(userPro, file, u_name, u_pwd, u_pwd_ag);
					}
				} else {
					lblNewLabel.setText("设备id不能为空！");
				}
			}
			
			//判断两次密码是否输入一样，一样就注册
			private void isPassword(Properties userPro,File file,
					String u_name, String u_pwd, String u_pwd_ag) {
				//判断两次密码是否相同
				if (u_pwd.equals(u_pwd_ag)) {
					//如果都不为0
					if (u_pwd.length() != 0) {
						//创建一个新的键-值对
						userPro.setProperty(u_name, u_pwd_ag);
						try {
							//将所有更改的信息加载入配置文件中
							//第一个参数指向加载的配置文件，第二个参数为Sting类型用来给配置文件添加备注信息
							userPro.store(new FileOutputStream(file),
									null);
						} catch (FileNotFoundException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
						//锁定"注册"按钮
						btnNewButton_1.setEnabled(false);
						//返回连接界面
						Connect frame = new Connect();
						//显示连接界面
						frame.setVisible(true);
						//隐藏注册界面
						setVisible(false);
					} else {
						lblNewLabel.setText("密码不能为空！");
					}
				} else {
					lblNewLabel.setText("两次密码不一致！");
				}
			}
		});
	}
}
